home *** CD-ROM | disk | FTP | other *** search
- global monsterSO, monsterData, playerViewpoint
-
- on initializeMonsters
- monsterData = []
- repeat with wMonster = 1 to 25
- wSprite = monsterSO + wMonster
- puppetSprite(wSprite, 1)
- sprite(wSprite).visible = 0
- set the member of sprite wSprite to "Teeth 1"
- set the ink of sprite wSprite to 36
- add(monsterData, [0, 0, point(0, 0), []])
- end repeat
- end
-
- on addMonster spawnType, spawnLoc, spawnParameters
- validSlot = 0
- repeat with wSlot = 1 to count(monsterData)
- if (monsterData[wSlot][1] = 0) and (validSlot = 0) then
- validSlot = wSlot
- end if
- end repeat
- if validSlot <> 0 then
- wSprite = monsterSO + validSlot
- monsterData[validSlot] = [1, spawnType, spawnLoc, spawnParameters, 0]
- sprite(wSprite).visible = 1
- sprite(wSprite).rotation = 0
- end if
- end
-
- on moveMonsters
- global monsterHitArea, monsterHarmArea
- monsterHitArea = []
- monsterHarmArea = []
- repeat with wMonster = 1 to count(monsterData)
- wSprite = monsterSO + wMonster
- if monsterData[wMonster][1] = 1 then
- case monsterData[wMonster][2] of
- 1:
- curLoc = monsterData[wMonster][3]
- moveSpeed = monsterData[wMonster][4][1]
- if moveSpeed[1] > 0 then
- solidTest = checkSolidpoint(curLoc + point(15, 0))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][1] = 0 - abs(moveSpeed[1])
- end if
- monsterFlip = 1
- else
- if moveSpeed[1] < 0 then
- solidTest = checkSolidpoint(curLoc - point(15, 0))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][1] = abs(moveSpeed[1])
- end if
- monsterFlip = 0
- end if
- end if
- moveSpeed[2] = 0
- driftSpd = monsterData[wMonster][4][2]
- driftMoment = monsterData[wMonster][4][3]
- repeat with wvect = 1 to 2
- if driftSpd[wvect] > 0 then
- driftMoment[wvect] = driftMoment[wvect] - 1
- next repeat
- end if
- driftMoment[wvect] = driftMoment[wvect] + 1
- end repeat
- driftSpd = driftSpd + driftMoment
- monsterData[wMonster][4][2] = driftSpd
- monsterData[wMonster][4][3] = driftMoment
- monsterData[wMonster][3] = monsterData[wMonster][3] + moveSpeed
- if monsterData[wMonster][5] >= 1 then
- addScore(30)
- playSound("jump on enemy SFX", 3)
- set the loc of sprite (monsterSO + wMonster) to point(-50, -50)
- rpoint = monsterData[wMonster][3]
- addparticle(rpoint, 0, 1)
- monsterData[wMonster][1] = 0
- repeat with wCoin = 1 to 1
- addPickup(1, 1, monsterData[wMonster][3], point([-3, 0, 3][wCoin], 5 - random(3)))
- end repeat
- else
- monsterData[wMonster][4][4] = monsterData[wMonster][4][4] + 1
- if monsterData[wMonster][4][4] > 2 then
- monsterData[wMonster][4][4] = 1
- end if
- set the member of sprite wSprite to "teeth" & " " & string(monsterData[wMonster][4][4])
- set the loc of sprite wSprite to monsterData[wMonster][3] - playerViewpoint
- sprite(wSprite).flipH = monsterFlip
- curLoc = monsterData[wMonster][3]
- add(monsterHitArea, rect(curLoc[1] - 25, curLoc[2] - 25, curLoc[1] + 25, curLoc[2] + 25))
- add(monsterHarmArea, rect(curLoc[1] - 15, curLoc[2] - 15, curLoc[1] + 15, curLoc[2] + 25))
- end if
- 2:
- monsterData[wMonster][4][1] = monsterData[wMonster][4][1] + monsterData[wMonster][4][2]
- curLoc = monsterData[wMonster][3]
- solidTest = checkSolidpoint(curLoc)
- locY = integer(cos(monsterData[wMonster][4][1] * PI / 180) * -70)
- locX = integer(sin(monsterData[wMonster][4][1] * PI / 180) * 70)
- boomloc = monsterData[wMonster][3] + point(locX, locY)
- if solidTest[1] = 0 then
- addScore(60)
- playSound("jump on enemy SFX", 3)
- monsterData[wMonster][1] = 0
- set the loc of sprite wSprite to point(-50, -50)
- set the member of sprite wSprite to "Void Block"
- sprite(wSprite).rotation = 0
- addparticle(boomloc, 0, 1)
- repeat with wCoin = 1 to 1
- addPickup(1, 1, monsterData[wMonster][3], point([-3, 0, 3][wCoin], 5 - random(3)))
- end repeat
- else
- set the loc of sprite wSprite to monsterData[wMonster][3] - playerViewpoint
- set the member of sprite wSprite to "Spinning eye"
- sprite(wSprite).rotation = monsterData[wMonster][4][1]
- end if
- curLoc = boomloc
- add(monsterHitArea, rect(0, 0, 0, 0))
- add(monsterHarmArea, rect(curLoc[1] - 10, curLoc[2] - 10, curLoc[1] + 10, curLoc[2] + 10))
- 3:
- curLoc = monsterData[wMonster][3]
- moveSpeed = monsterData[wMonster][4][1]
- if moveSpeed[1] > 0 then
- solidTest = checkSolidpoint(curLoc + point(15, 0))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][1] = 0 - abs(moveSpeed[1])
- end if
- monsterFlip = 1
- else
- if moveSpeed[1] < 0 then
- solidTest = checkSolidpoint(curLoc - point(15, 0))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][1] = abs(moveSpeed[1])
- end if
- monsterFlip = 0
- end if
- end if
- if moveSpeed[2] > 0 then
- solidTest = checkSolidpoint(curLoc + point(0, 15))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][2] = 0 - abs(moveSpeed[2])
- end if
- else
- if moveSpeed[2] < 0 then
- solidTest = checkSolidpoint(curLoc - point(0, 15))
- if solidTest[1] = 1 then
- monsterData[wMonster][4][1][2] = abs(moveSpeed[2])
- end if
- end if
- end if
- monsterData[wMonster][3] = monsterData[wMonster][3] + moveSpeed
- if monsterData[wMonster][5] >= 1 then
- addScore(45)
- playSound("jump on enemy SFX", 3)
- set the loc of sprite (monsterSO + wMonster) to point(-50, -50)
- rpoint = monsterData[wMonster][3]
- addparticle(rpoint, 0, 1)
- monsterData[wMonster][1] = 0
- repeat with wCoin = 1 to 1
- addPickup(1, 1, monsterData[wMonster][3], point([-3, 0, 3][wCoin], 5 - random(3)))
- end repeat
- else
- monsterData[wMonster][4][4] = monsterData[wMonster][4][4] + 1
- if monsterData[wMonster][4][4] > 2 then
- monsterData[wMonster][4][4] = 1
- end if
- set the member of sprite wSprite to "Rolling Eye"
- sprite(wSprite).rotation = monsterData[wMonster][3][1] mod 360
- set the loc of sprite wSprite to monsterData[wMonster][3] - playerViewpoint
- curLoc = monsterData[wMonster][3]
- add(monsterHitArea, rect(curLoc[1] - 25, curLoc[2] - 25, curLoc[1] + 25, curLoc[2] + 25))
- add(monsterHarmArea, rect(curLoc[1] - 15, curLoc[2] - 15, curLoc[1] + 15, curLoc[2] + 15))
- end if
- 4:
- curLoc = monsterData[wMonster][3]
- moveSpeed = monsterData[wMonster][4][1]
- floorTest = checkSolidpoint(curLoc + point(0, 20))
- if floorTest[1] = 0 then
- monsterData[wMonster][4][1] = point(0, abs(moveSpeed[2]))
- else
- if moveSpeed[1] > 0 then
- solidTest = checkSolidpoint(curLoc + point(20, 20))
- walltest = checkSolidpoint(curLoc + point(20, 0))
- if (solidTest[1] = 0) or (walltest[1] = 1) then
- monsterData[wMonster][4][1][1] = 0 - abs(moveSpeed[1])
- end if
- monsterFlip = 1
- else
- if moveSpeed[1] < 0 then
- solidTest = checkSolidpoint(curLoc + point(-20, 20))
- walltest = checkSolidpoint(curLoc + point(-20, 0))
- if (solidTest[1] = 0) or (walltest[1] = 1) then
- monsterData[wMonster][4][1][1] = abs(moveSpeed[1])
- end if
- monsterFlip = 0
- else
- monsterData[wMonster][4][1][1] = abs(4)
- monsterFlip = 0
- end if
- end if
- moveSpeed[2] = 0
- end if
- driftSpd = monsterData[wMonster][4][2]
- driftMoment = monsterData[wMonster][4][3]
- repeat with wvect = 1 to 2
- if driftSpd[wvect] > 0 then
- driftMoment[wvect] = driftMoment[wvect] - 1
- next repeat
- end if
- driftMoment[wvect] = driftMoment[wvect] + 1
- end repeat
- driftSpd = driftSpd + driftMoment
- monsterData[wMonster][4][2] = driftSpd
- monsterData[wMonster][4][3] = driftMoment
- monsterData[wMonster][3] = monsterData[wMonster][3] + moveSpeed
- if monsterData[wMonster][5] >= 1 then
- addScore(25)
- playSound("jump on enemy SFX", 3)
- set the loc of sprite (monsterSO + wMonster) to point(-50, -50)
- rpoint = monsterData[wMonster][3]
- addparticle(rpoint, 0, 1)
- monsterData[wMonster][1] = 0
- repeat with wCoin = 1 to 1
- addPickup(1, 1, monsterData[wMonster][3], point([-3, 0, 3][wCoin], 5 - random(3)))
- end repeat
- else
- monsterData[wMonster][4][4] = monsterData[wMonster][4][4] + 1
- if monsterData[wMonster][4][4] > 9 then
- monsterData[wMonster][4][4] = 1
- end if
- if monsterData[wMonster][4][4] > 6 then
- set the member of sprite wSprite to "NewTiny" & "1"
- else
- if monsterData[wMonster][4][4] > 3 then
- set the member of sprite wSprite to "NewTiny" & "2"
- else
- set the member of sprite wSprite to "newTiny" & "3"
- end if
- end if
- set the loc of sprite wSprite to monsterData[wMonster][3] - playerViewpoint + point(0, -5)
- sprite(wSprite).flipH = monsterFlip
- curLoc = monsterData[wMonster][3]
- add(monsterHitArea, rect(curLoc[1] - 25, curLoc[2] - 25, curLoc[1] + 25, curLoc[2] + 25))
- add(monsterHarmArea, rect(curLoc[1] - 15, curLoc[2] - 15, curLoc[1] + 15, curLoc[2] + 15))
- end if
- 5:
- curLoc = monsterData[wMonster][3]
- driftSpd = monsterData[wMonster][4][2]
- driftMoment = monsterData[wMonster][4][3]
- repeat with wvect = 1 to 2
- if driftSpd[wvect] > 0 then
- driftMoment[wvect] = driftMoment[wvect] - 1
- next repeat
- end if
- driftMoment[wvect] = driftMoment[wvect] + 1
- end repeat
- driftSpd = driftSpd + driftMoment
- monsterData[wMonster][4][2] = driftSpd
- monsterData[wMonster][4][3] = driftMoment
- set the member of sprite wSprite to "Trampoline"
- set the loc of sprite wSprite to monsterData[wMonster][3] + driftSpd - playerViewpoint
- sprite(wSprite).flipH = monsterFlip
- curLoc = monsterData[wMonster][3] + driftSpd
- add(monsterHitArea, rect(curLoc[1] - 25, curLoc[2] - 25, curLoc[1] + 25, curLoc[2] + 25))
- add(monsterHarmArea, rect(curLoc[1] - 15, curLoc[2] - 15, curLoc[1] + 15, curLoc[2] + 15))
- end case
- next repeat
- end if
- add(monsterHitArea, rect(0, 0, 0, 0))
- add(monsterHarmArea, rect(0, 0, 0, 0))
- end repeat
- end
-